package ArrayList

type StackX struct {
	myarray *ArrayList
	capSize int //最大范围
	Myit    Iterator
}

func NewArrayListStackX() *StackX {
	sk := new(StackX)
	sk.capSize = 10

	sk.myarray = NewArrayList()
	sk.Myit = sk.myarray.Iterator()
	return sk
}

//清空
func (sk *StackX) Clear() {
	sk.myarray.Clear()
	sk.capSize = 10

}

//大小
func (sk *StackX) Size() int {
	return sk.myarray.TheSize
}

//弹出
func (sk *StackX) Pop() interface{} {
	if !sk.IsEmpty() {
		val := sk.myarray.dataStore[sk.myarray.TheSize-1] //取最后一个值
		// sk.dataSource = sk.dataSource[:sk.currentSize-1] //删除最后一个
		// sk.currentSize--                                 // 移动下表
		sk.myarray.Delete(sk.myarray.TheSize - 1)
		return val
	}
	return nil
}

//压入
func (sk *StackX) Push(data interface{}) {
	if !sk.IsFull() {
		//sk.dataSource = append(sk.dataSource, data)
		//sk.currentSize++
		sk.myarray.Append(data)
	}
}

// 是否满了
func (sk *StackX) IsFull() bool {
	if sk.capSize <= sk.myarray.TheSize {
		return true
	}
	return false
}

//是否为空
func (sk *StackX) IsEmpty() bool {
	if sk.myarray.TheSize == 0 {
		return true
	}
	return false
}
